home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / mac / DirectX SDK / DXSDK / include / DShowIDL / Bdatif.idl < prev    next >
Text File  |  2001-10-08  |  22KB  |  634 lines

  1. //---------------------------------------------------------------------
  2. //
  3. //  Copyright (c) 1999-2001 Microsoft Corporation
  4. //
  5. //  BDATIF.idl
  6. //
  7. //---------------------------------------------------------------------
  8.  
  9. cpp_quote("//+-------------------------------------------------------------------------")
  10. cpp_quote("//")
  11. cpp_quote("//  Microsoft Windows")
  12. cpp_quote("//  Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.")
  13. cpp_quote("//")
  14. cpp_quote("//--------------------------------------------------------------------------")
  15. cpp_quote("#if ( _MSC_VER >= 800 )")
  16. cpp_quote("#pragma warning(disable:4201)    /* Nameless struct/union */")
  17. cpp_quote("#endif")
  18. cpp_quote("#if ( _MSC_VER >= 1020 )")
  19. cpp_quote("#pragma once")
  20. cpp_quote("#endif")
  21.  
  22.  
  23. //---------------------------------------------------------------------
  24. // IUnknown import idl
  25. //---------------------------------------------------------------------
  26.  
  27. #ifndef DO_NO_IMPORTS
  28. import "unknwn.idl";
  29. import "strmif.idl";
  30. import "tuner.idl";
  31. #endif
  32.  
  33.  
  34. interface IMPEG2_TIF_CONTROL;
  35. interface IATSCChannelInfo;
  36.  
  37.  
  38. //******************************************************************************
  39. //
  40. //  IMPEG2_TIF_CONTROL interface
  41. //
  42. //  Implemented by the Microsoft ATSC/DVB BDA Network Provider
  43. //
  44. //      Used by a transport information filter (TIF) to request table
  45. //      sections carried on specific PIDs within the transport stream.
  46. //      The Network Provider Filter will, in turn, do the necessary
  47. //      control on the Demux Filter. All sections are delivered as comlete
  48. //      mpeg2 table sections via the TIF's connection to the Demux Filter.
  49. //
  50. [
  51.     object,
  52.     uuid(F9BAC2F9-4149-4916-B2EF-FAA202326862),
  53.     helpstring("BDA Network Provider Inteface for DVB/ATSC Transport Information Filters"),
  54.     pointer_default(unique)
  55. ]
  56. interface IMPEG2_TIF_CONTROL : IUnknown
  57. {
  58.  
  59.     [helpstring("Used to register a transport analyzer with the Network Provider")]
  60.     HRESULT
  61.     RegisterTIF (
  62.         [in]  IUnknown *    pUnkTIF,
  63.         [in, out] ULONG *   ppvRegistrationContext
  64.         );
  65.  
  66.     [helpstring("Used to unregister TIF with the Network Provider")]
  67.     HRESULT
  68.     UnregisterTIF (
  69.         [in] ULONG          pvRegistrationContext
  70.         );
  71.  
  72.     [helpstring("Used to add PSI/SI MPEG2 packet IDs to the TIF's data stream")]
  73.     HRESULT
  74.     AddPIDs (
  75.         [in] ULONG      ulcPIDs,
  76.         [in] ULONG *    pulPIDs
  77.         );
  78.  
  79.     [helpstring("Used to remove PSI/SI MPEG2 packet IDs from the TIF's data stream")]
  80.     HRESULT
  81.     DeletePIDs (
  82.         [in] ULONG      ulcPIDs,
  83.         [in] ULONG *    pulPIDs
  84.         );
  85.  
  86.     [helpstring("Returns the number of MPEG2 Packet IDs being filtered into the TIF's input data.")]
  87.     HRESULT
  88.     GetPIDCount (
  89.         [out] ULONG *   pulcPIDs
  90.         );
  91.  
  92.     [helpstring("Returns the the list of MPEG2 Packet IDs being filtered into the TIF's input data.")]
  93.     HRESULT
  94.     GetPIDs (
  95.         [out] ULONG *   pulcPIDs,
  96.         [out] ULONG *   pulPIDs
  97.         );
  98.  
  99. }
  100.  
  101.  
  102. //******************************************************************************
  103. //
  104. //  ITuneRequestInfo interface
  105. //
  106. //  Implemented by a BDA transport information filter (TIF)
  107. //
  108. //      Used by the BDA Network Provider to obtain network specific
  109. //      information about locating transport streams and aquiring
  110. //      services.
  111. //
  112. //
  113. //      GetLocatorData -
  114. //
  115. //      GetComponentData -
  116. //
  117. //      CreateComponentList -
  118. //
  119. //      GetNextService -
  120. //
  121. //      GetPreviouService -
  122. //
  123. //      GetNextLocator -
  124. //
  125. //      GetPreviousLocator -
  126. //
  127. [
  128.     object,
  129.     uuid(A3B152DF-7A90-4218-AC54-9830BEE8C0B6),
  130.     helpstring("Interface provided by the Mpeg2 Transport Information Filter to supply tuning details."),
  131.     pointer_default(unique)
  132. ]
  133. interface ITuneRequestInfo : IUnknown
  134. {
  135.  
  136.     [helpstring("TIF fills in channel/program locator information for the given tune request.")]
  137.     HRESULT
  138.     GetLocatorData (
  139.         [in]  ITuneRequest *Request
  140.         );
  141.  
  142.     [helpstring("TIF fills in all network specific component data for the existing component list on the given tune request.")]
  143.     HRESULT
  144.     GetComponentData (
  145.         [in]  ITuneRequest *CurrentRequest
  146.         );
  147.  
  148.     [helpstring("TIF creates a complete component list and fills in all network specific component data on the given tune request")]
  149.     HRESULT
  150.     CreateComponentList (
  151.         [in]  ITuneRequest *CurrentRequest
  152.         );
  153.  
  154.     [helpstring("TIF creates a new TuneRequest with channel/program locator information for the next service.")]
  155.     HRESULT
  156.     GetNextProgram (
  157.         [in]  ITuneRequest *CurrentRequest,
  158.         [out, retval] ITuneRequest **TuneRequest
  159.         );
  160.  
  161.     [helpstring("TIF creates a new TuneRequest with channel/program locator information for the previous service.")]
  162.     HRESULT
  163.     GetPreviousProgram (
  164.         [in]  ITuneRequest *CurrentRequest,
  165.         [out, retval] ITuneRequest **TuneRequest
  166.         );
  167.  
  168.     [helpstring("TIF creates a new TuneRequest with locator information for the next transport stream.")]
  169.     HRESULT
  170.     GetNextLocator (
  171.         [in]  ITuneRequest *CurrentRequest,
  172.         [out, retval] ITuneRequest **TuneRequest
  173.         );
  174.  
  175.     [helpstring("TIF creates a new TuneRequest with locator information for the previous transport stream.")]
  176.     HRESULT
  177.     GetPreviousLocator (
  178.         [in]  ITuneRequest *CurrentRequest,
  179.         [out, retval] ITuneRequest **TuneRequest
  180.         );
  181. }
  182.     
  183.  
  184. //******************************************************************************
  185. //
  186. //  IGuideDataEvent
  187. //
  188. //  This is the guide data event notification callback interface.  The
  189. //  callback interface is registered on a transport analyzer's
  190. //  IConnectionPoint by the event consumer.
  191. //
  192. //  The event consumer MUST NOT BLOCK THE CALLING THREAD.
  193. //
  194. //  If the consumer requires additional information about the event, it
  195. //  should queue the event to a separate thread.    
  196. //
  197. // {EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7}
  198. //
  199. [
  200.     object,
  201.     uuid(EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7),
  202.     helpstring("Consumers of a guide data events must implement this callback interface."),
  203.     pointer_default(unique)
  204. ]
  205. interface IGuideDataEvent : IUnknown
  206. {
  207.     //  Indicates that a complete set of guide data has been acquire from
  208.     //  the current transport stream.
  209.     //
  210.     //  MANDATORY - If a transport analyzer supports IGuideDataEvent then
  211.     //              it must supply this event.
  212.     //
  213.     HRESULT GuideDataAcquired(
  214.         );
  215.         
  216.     //  Indicates that information about one or more programs changed.
  217.     //
  218.     //  If varProgramDescriptionID is NULL then the consumer
  219.     //  must get properties for all programs to determine which ones
  220.     //  changed.
  221.     //
  222.     //  MANDATORY - If a transport analyzer supports IGuideDataEvent then
  223.     //              it must supply this event.
  224.     //
  225.     HRESULT ProgramChanged(
  226.         [in] VARIANT    varProgramDescriptionID
  227.         );
  228.         
  229.     //  Indicates that information about one or more services changed.
  230.     //
  231.     //  If varServiceDescriptionID is NULL then the consumer
  232.     //  must get properties for all services to determine which ones
  233.     //  changed.
  234.     //
  235.     //  MANDATORY - If a transport analyzer supports IGuideDataEvent then
  236.     //              it must supply this event.
  237.     //
  238.     HRESULT ServiceChanged(
  239.         [in] VARIANT    varServiceDescriptionID
  240.         );
  241.         
  242.     //  Indicates that information about one or more schedule entries
  243.     //  changed.
  244.     //
  245.     //  If varScheduleEntryDescriptionID is NULL then the consumer
  246.     //  must get properties for all schedule entries to determine which ones
  247.     //  changed.
  248.     //
  249.     //  MANDATORY - If a transport analyzer supports IGuideDataEvent then
  250.     //              it must supply this event.
  251.     //
  252.     HRESULT ScheduleEntryChanged(
  253.         [in] VARIANT    varScheduleEntryDescriptionID
  254.         );
  255.         
  256.     //  Indicates that the program with the given Description.ID
  257.     //  has been deleted.
  258.     //  
  259.     //
  260.     //  Optional - Transport analyzer may supply this event.  Consumer
  261.     //             may return E_NOTIMPL.   
  262.     //
  263.     HRESULT ProgramDeleted(
  264.         [in] VARIANT    varProgramDescriptionID
  265.         );
  266.         
  267.     //  Indicates that the service with the given Description.ID
  268.     //  has been deleted.
  269.     //  
  270.     //
  271.     //  Optional - Transport analyzer may supply this event.  Consumer
  272.     //             may return E_NOTIMPL.   
  273.     //
  274.     HRESULT ServiceDeleted(
  275.         [in] VARIANT    varServiceDescriptionID
  276.         );
  277.         
  278.         
  279.     //  Indicates that the schedule entry with the given Description.ID
  280.     //  has been deleted.
  281.     //  
  282.     //
  283.     //  Optional - Transport analyzer may supply this event.  Consumer
  284.     //             may return E_NOTIMPL.   
  285.     //
  286.     HRESULT ScheduleDeleted(
  287.         [in] VARIANT    varScheduleEntryDescriptionID
  288.         );
  289. }
  290.     
  291.  
  292. //******************************************************************************
  293. //
  294. //  IGuideDataPropery
  295. //
  296. // {88EC5E58-BB73-41d6-99CE-66C524B8B591}
  297. //
  298. [
  299.     object,
  300.     uuid(88EC5E58-BB73-41d6-99CE-66C524B8B591),
  301.     helpstring("Interface provided by a transport analyzer to represent a guide data property."),
  302.     pointer_default(unique)
  303. ]
  304. interface IGuideDataProperty : IUnknown
  305. {
  306.     [propget] HRESULT Name([out] BSTR *pbstrName);
  307.     [propget] HRESULT Language([out] long *idLang);
  308.     [propget] HRESULT Value([out] VARIANT *pvar);
  309. }
  310.  
  311.  
  312. //******************************************************************************
  313. //
  314. //  IEnumGuideDataProperties
  315. //
  316. // {AE44423B-4571-475c-AD2C-F40A771D80EF}
  317. //
  318. [
  319.     object,
  320.     uuid(AE44423B-4571-475c-AD2C-F40A771D80EF),
  321.     helpstring("Interface provided by a transport analyzer to enumerate guide data properties."),
  322.     pointer_default(unique)
  323. ]
  324. interface IEnumGuideDataProperties : IUnknown
  325. {
  326.     HRESULT Next([in] unsigned long celt, [out] IGuideDataProperty **ppprop, [out] unsigned long *pcelt);
  327.     HRESULT Skip([in] unsigned long celt);
  328.     HRESULT Reset();
  329.     HRESULT Clone([out] IEnumGuideDataProperties **ppenum);
  330. }
  331.  
  332.  
  333. //******************************************************************************
  334. //
  335. //  IEnumTuneRequests
  336. //
  337. // {1993299C-CED6-4788-87A3-420067DCE0C7}
  338. //
  339. [
  340.     object,
  341.     uuid(1993299C-CED6-4788-87A3-420067DCE0C7),
  342.     helpstring("Interface provided by a transport analyzer to enumerate service tune requests ."),
  343.     pointer_default(unique)
  344. ]
  345. interface IEnumTuneRequests : IUnknown
  346. {
  347.     HRESULT Next([in] unsigned long celt, [out] ITuneRequest **ppprop, [out] unsigned long *pcelt);
  348.     HRESULT Skip([in] unsigned long celt);
  349.     HRESULT Reset();
  350.     HRESULT Clone([out] IEnumTuneRequests **ppenum);
  351. }
  352.  
  353.  
  354. //******************************************************************************
  355. //
  356. //  IGuideData
  357. //
  358. // {61571138-5B01-43cd-AEAF-60B784A0BF93}
  359. //
  360. [
  361.     object,
  362.     uuid(61571138-5B01-43cd-AEAF-60B784A0BF93),
  363.     helpstring("Interface provided by a transport analyzer to supply guide data information."),
  364.     pointer_default(unique)
  365. ]
  366. interface IGuideData : IUnknown
  367. {
  368.     //-------------------------------------------------------------------------
  369.     //
  370.     //  GetServices
  371.     //      Returns an enumeration of tune requests for all services whose
  372.     //      information is found in the current transport stream.
  373.     //
  374.     //  Parameters
  375.     //
  376.     //      IEnumTuneRequests **
  377.     //          Location in which a reference to the resulting
  378.     //          IEnumTuneRequests is placed.  The caller must release
  379.     //          this reference when finished with it.
  380.     //
  381.     //  Comments
  382.     //      This call is used to enumerate all services whose information
  383.     //      can be found in the service descriptor table. Each tune request
  384.     //      in the IEnumTuneRequest * contains the tune request including the
  385.     //      locator data for the service.
  386.     // 
  387.     [helpstring("Returns an enumeration of services whose information is found in the given transport stream")]
  388.     HRESULT
  389.     GetServices (
  390.         [out, retval]  IEnumTuneRequests **      ppEnumTuneRequests
  391.         );
  392.  
  393.  
  394.     //-------------------------------------------------------------------------
  395.     //
  396.     //  GetServiceProperties
  397.     //      Returns an enumeration of all guide data properties for
  398.     //      the service with the given Description.ID.
  399.     //
  400.     //  Parameters
  401.     //      ITuneRequest *  
  402.     //          Pointer to a tune request that contains information needed
  403.     //          to indentify the requested transport stream.
  404.     //          A NULL ITuneRequest * indicates that information about the
  405.     //          current transport stream is requested.
  406.     //
  407.     //      IEnumGuideDataProperties **
  408.     //          Location in which a reference to the resulting
  409.     //          IEnumGuideDataProperties is placed.  The caller must release
  410.     //          this reference when finished with it.
  411.     //
  412.     //  Required Properties
  413.     //      The following properties MUST be included in the returned
  414.     //      property enumeration.
  415.     //
  416.     //      Description.ID
  417.     //          Uniquely identifies a service.
  418.     //
  419.     //      Description.Name
  420.     //          The default name to use for this service in the channel lineup.
  421.     //
  422.     //      Description.Version
  423.     //          Identifies the current version of the properties associated
  424.     //          with this service.
  425.     //
  426.     //      Provider.Name
  427.     //          Name of the service provider (e.g. "KCTS")
  428.     //
  429.     //      Provider.NetworkName
  430.     //          Name of the network on which the service is provided.
  431.     //          (e.g. "PBS")
  432.     //
  433.     //      Service.TuneRequest
  434.     //          Contains a tune request in the variant
  435.     //
  436.     // 
  437.     [helpstring("Returns an enumeration of all guide data properties for the service specified by a tune request.")]
  438.     HRESULT
  439.     GetServiceProperties (
  440.         [in]           ITuneRequest *               pTuneRequest,
  441.         [out, retval]  IEnumGuideDataProperties **  ppEnumProperties
  442.         );
  443.  
  444.     //-------------------------------------------------------------------------
  445.     //
  446.     //  GetProgramIDs
  447.     //      Returns an enumeration of the unique identifiers (Description.ID)
  448.     //      of programs with description contained in all transport
  449.     //      streams
  450.     //
  451.     //  Parameters
  452.     //
  453.     //      IEnumVARIANT **
  454.     //          Location in which a reference to the resulting
  455.     //          IEnumVARIANT is placed.  The caller must release
  456.     //          this reference when finished with it.
  457.     //
  458.     //  Comments
  459.     //      This call is used to get a list of programs that have
  460.     //      guide data properties in all transport streams.
  461.     //      Each variant returned in the IEnumVARIANT * contains the
  462.     //      unique Description.ID property for a program.
  463.     //      Note that more than on transport stream may contain properties
  464.     //      for the same program.  In this case the properties should be
  465.     //      merged. 
  466.     // 
  467.     [helpstring("Returns an enumeration of the Description.ID property for all programs on the given transport stream.")]
  468.     HRESULT
  469.     GetGuideProgramIDs (
  470.         [out, retval]  IEnumVARIANT **      pEnumPrograms
  471.         );
  472.  
  473.     //-------------------------------------------------------------------------
  474.     //
  475.     //  GetProgramProperties
  476.     //      Returns an enumeration of all guide data properties for
  477.     //      the program with the given Description.ID.
  478.     //
  479.     //  Parameters
  480.     //      varProgramDescriptionID 
  481.     //          Variant containing the unique identifier for the program
  482.     //          for which properties are requested.
  483.     //
  484.     //      IEnumGuideDataProperties **
  485.     //          Location in which a reference to the resulting
  486.     //          IEnumGuideDataProperties is placed.  The caller must release
  487.     //          this reference when finished with it.
  488.     //
  489.     //  Required Properties
  490.     //      The following properties MUST be included in the returned
  491.     //      property enumeration.
  492.     //
  493.     //      Description.ID
  494.     //          Uniquely identifies a program.
  495.     //
  496.     //      Description.Version
  497.     //          Identifies the current version of the properties associated
  498.     //          with this program.
  499.     //
  500.     //      Description.Title
  501.     //          Human readable title of the program (e.g. "")
  502.     //
  503.     //      Description.Long
  504.     //          A description of the program.
  505.     // 
  506.     [helpstring("Returns an enumeration of all guide data properties for the program with the given Description.ID.")]
  507.     HRESULT
  508.     GetProgramProperties (
  509.         [in]           VARIANT                      varProgramDescriptionID,
  510.         [out, retval]  IEnumGuideDataProperties **  ppEnumProperties
  511.         );
  512.  
  513.     //-------------------------------------------------------------------------
  514.     //
  515.     //  GetScheduleIDs
  516.     //      Returns an enumeration of the unique identifiers (Description.ID)
  517.     //      transport of schedule entries with description contained in the
  518.     //      given transport stream.
  519.     //
  520.     //  Parameters
  521.     //
  522.     //      IEnumVARIANT **
  523.     //          Location in which a reference to the resulting
  524.     //          IEnumVARIANT is placed.  The caller must release
  525.     //          this reference when finished with it.
  526.     //
  527.     //  Comments
  528.     //      This call is used to get a list of schedule entries that have
  529.     //      guide data properties in all transport streams.
  530.     //      Each variant returned in the IEnumVARIANT * contains the
  531.     //      unique Description.ID property for a schedule entry.
  532.     //      Note that more than on transport stream may contain properties
  533.     //      for the same schedule entry.  In this case the properties
  534.     //      should be merged. 
  535.     // 
  536.     [helpstring("Returns an enumeration of the Description.ID property for all schedule entries in the transport stream specified by a tune request.")]
  537.     HRESULT
  538.     GetScheduleEntryIDs (
  539.         [out, retval]  IEnumVARIANT **      pEnumScheduleEntries
  540.         );
  541.  
  542.     //-------------------------------------------------------------------------
  543.     //
  544.     //  GetScheduleEntryProperties
  545.     //      Returns an enumeration of all guide data properties for
  546.     //      the schedule entry with the given Description.ID.
  547.     //
  548.     //  Parameters
  549.     //      varScheduleEntryDescriptionID 
  550.     //          Variant containing the unique identifier for the schedule
  551.     //          entry for which properties are requested.
  552.     //
  553.     //      IEnumGuideDataProperties **
  554.     //          Location in which a reference to the resulting
  555.     //          IEnumGuideDataProperties is placed.  The caller must release
  556.     //          this reference when finished with it.
  557.     //
  558.     //  Required Properties
  559.     //      The following properties MUST be included in the returned
  560.     //      property enumeration.
  561.     //
  562.     //      Description.ID
  563.     //          Uniquely identifies a schedule entry.
  564.     //
  565.     //      Description.Version
  566.     //          Identifies the current version of the properties associated
  567.     //          with this program.
  568.     //
  569.     //      Time.Start
  570.     //          The starting time and date of this schedule entry.
  571.     //
  572.     //      Time.End
  573.     //          The ending time and date of this schedule entry.
  574.     //
  575.     //      Schedule.Program
  576.     //          The Description.ID of the program that will play at the
  577.     //          time specified by this schedule entry.
  578.     //
  579.     //      Schedule.Service
  580.     //          The Description.ID of the Service that carries the
  581.     //          program that will play at the time specified by this
  582.     //          schedule entry.
  583.     // 
  584.     [helpstring("Returns an enumeration of all guide data properties for the schedule entry with the given Description.ID.")]
  585.     HRESULT
  586.     GetScheduleEntryProperties (
  587.         [in]           VARIANT                      varScheduleEntryDescriptionID,
  588.         [out, retval]  IEnumGuideDataProperties **  ppEnumProperties
  589.         );
  590.  
  591. }
  592.  
  593.  
  594. //******************************************************************************
  595. //
  596. //  IGuideDataLoader
  597. //
  598. // All Guide Data Loaders MUST implement this interface.  It is how they are
  599. // provided with the IGuideData interface that they will use.
  600. //
  601. // {4764ff7c-fa95-4525-af4d-d32236db9e38}
  602. [
  603.     object,
  604.     uuid(4764ff7c-fa95-4525-af4d-d32236db9e38),
  605.     helpstring("IGuideDataLoader Interface"),
  606.     pointer_default(unique)
  607. ]
  608. interface IGuideDataLoader : IUnknown
  609. {
  610.     HRESULT Init([in] IGuideData *pGuideStore);
  611.     HRESULT Terminate();
  612. };
  613.  
  614. [
  615.     uuid(8224A083-7F8C-432D-B83E-3C5E9BDE3528),
  616.     version(1.0),
  617.     helpstring("psisload 1.0 Type Library")
  618. ]
  619. library PSISLOADLib
  620. {
  621.     importlib("stdole32.tlb");
  622.     importlib("stdole2.tlb");
  623.  
  624.     [
  625.         uuid(14EB8748-1753-4393-95AE-4F7E7A87AAD6),
  626.         helpstring("TIFLoad Class")
  627.     ]
  628.     coclass TIFLoad
  629.     {
  630.         interface IGuideDataLoader;
  631.         interface IGuideDataEvent;
  632.     };
  633. };
  634.